package com.ticket.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.ticket.system.domain.vo.OrderDetailVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ticket.common.annotation.Excel;
import com.ticket.common.core.domain.BaseEntity;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * 退款单对象 yanchu_refund_order
 * 
 * @author ruoyi
 * @date 2023-10-31
 */
@ApiModel(description = "退款单对象")
public class YanchuRefundOrder extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键id */
    private Long id;

    /** 订单id（关联yanchu_order表主键） */
    @Excel(name = "订单id", readConverterExp = "关联yanchu_order表主键")
    @ApiModelProperty(value = "订单编码",required = true)
    @NotNull(message = "订单id不可以为空")
    private Long orderId;

    /** 售后类型 1：退票退款; */
    @Excel(name = "售后类型 1：退票退款;")
    private Integer refundType;

    /** 退款标识 1：整单退款；2：部分退款; */
    @Excel(name = "退款标识 1：整单退款；2：部分退款;")
    @ApiModelProperty(value = "退款标识 1：整单退款；2：部分退款;")
    private Integer refundFlag;

    /** 退款单单号 */
    @Excel(name = "退款单单号")
    @ApiModelProperty(value = "退款单单号")
    private String refundNo;

    /** 退款单状态 1：退款中；2：已退款；3：被驳回； */
    @Excel(name = "退款单状态 1：退款中；2：已退款；3：被驳回；")
    @ApiModelProperty(value = "退款单状态 1：退款中；2：已退款；3：被驳回")
    private Integer refundStatus;

    /** 退款总金额 */
    @Excel(name = "退款总金额")
    @ApiModelProperty(value = "退款总金额")
    @NotNull(message = "退款总金额不可以为空")
    private BigDecimal refundTotalMoney;

    /** 退款原因 */
    @Excel(name = "退款原因")
    @ApiModelProperty(value = "退款原因",required = true)
    @NotNull(message = "退款原因不可以为空")
    @Size(min = 5, max = 100, message = "退款原因长度为5-100个字符")
    private String refundReason;

    /** 创建人 */
    @Excel(name = "创建人")
    private Long creator;

    /** 审批人 */
    @Excel(name = "审批人")
    private Long approver;

    /** 审批时间（退款时间） */
    @Excel(name = "审批时间", readConverterExp = "退款时间")
    private Date approvalTime;

    @ApiModelProperty(value = "订单详情编码，逗号分隔",required = true)
    @NotNull(message = "订单详情编码不可以为空")
    private String detailIds;

    @Excel(name = "订单号")
    @ApiModelProperty(value = "订单号",required = true)
    @NotNull(message = "订单号不可以为空")
    private String orderNo;

    private Long operaId;

    @ApiModelProperty(value = "观演卡金额",required = false)
    private BigDecimal cardAmt;
    @ApiModelProperty(value = "存储卡金额",required = false)
    private BigDecimal balanceAmt;

    @ApiModelProperty(value = "微信金额",required = false)
    private BigDecimal wechatAmt;
    //导出条件信息
    private String exportMsg;
    @ApiModelProperty(value = "购票人",required = false)
    private String userName;
    @ApiModelProperty(value = "手机号",required = false)
    private String userContact;

    @ApiModelProperty(value = "演出id",required = false)
    private Long performId;
    @ApiModelProperty(value = "场次id",required = false)
    private Long sessionId;

    public Long getPerformId() {
        return performId;
    }

    public void setPerformId(Long performId) {
        this.performId = performId;
    }

    public Long getSessionId() {
        return sessionId;
    }

    public void setSessionId(Long sessionId) {
        this.sessionId = sessionId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserContact() {
        return userContact;
    }

    public void setUserContact(String userContact) {
        this.userContact = userContact;
    }

    public String getExportMsg() {
        return exportMsg;
    }

    public void setExportMsg(String exportMsg) {
        this.exportMsg = exportMsg;
    }

    public BigDecimal getCardAmt() {
        return cardAmt;
    }

    public void setCardAmt(BigDecimal cardAmt) {
        this.cardAmt = cardAmt;
    }

    public BigDecimal getBalanceAmt() {
        return balanceAmt;
    }

    public void setBalanceAmt(BigDecimal balanceAmt) {
        this.balanceAmt = balanceAmt;
    }

    public BigDecimal getWechatAmt() {
        return wechatAmt;
    }

    public void setWechatAmt(BigDecimal wechatAmt) {
        this.wechatAmt = wechatAmt;
    }

    public Long getOperaId() {
        return operaId;
    }

    public void setOperaId(Long operaId) {
        this.operaId = operaId;
    }


    private List<OrderDetailVo> detailVoList;

    public List<OrderDetailVo> getDetailVoList() {
        return detailVoList;
    }

    public void setDetailVoList(List<OrderDetailVo> detailVoList) {
        this.detailVoList = detailVoList;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public String getDetailIds() {
        return detailIds;
    }

    public void setDetailIds(String detailIds) {
        this.detailIds = detailIds;
    }


    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setOrderId(Long orderId) 
    {
        this.orderId = orderId;
    }

    public Long getOrderId() 
    {
        return orderId;
    }
    public void setRefundType(Integer refundType) 
    {
        this.refundType = refundType;
    }

    public Integer getRefundType() 
    {
        return refundType;
    }
    public void setRefundFlag(Integer refundFlag) 
    {
        this.refundFlag = refundFlag;
    }

    public Integer getRefundFlag() 
    {
        return refundFlag;
    }
    public void setRefundNo(String refundNo) 
    {
        this.refundNo = refundNo;
    }

    public String getRefundNo() 
    {
        return refundNo;
    }
    public void setRefundStatus(Integer refundStatus) 
    {
        this.refundStatus = refundStatus;
    }

    public Integer getRefundStatus() 
    {
        return refundStatus;
    }
    public void setRefundTotalMoney(BigDecimal refundTotalMoney) 
    {
        this.refundTotalMoney = refundTotalMoney;
    }

    public BigDecimal getRefundTotalMoney() 
    {
        return refundTotalMoney;
    }
    public void setRefundReason(String refundReason) 
    {
        this.refundReason = refundReason;
    }

    public String getRefundReason() 
    {
        return refundReason;
    }
    public void setCreator(Long creator) 
    {
        this.creator = creator;
    }

    public Long getCreator() 
    {
        return creator;
    }
    public void setApprover(Long approver) 
    {
        this.approver = approver;
    }

    public Long getApprover() 
    {
        return approver;
    }
    public void setApprovalTime(Date approvalTime) 
    {
        this.approvalTime = approvalTime;
    }

    public Date getApprovalTime() 
    {
        return approvalTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("orderId", getOrderId())
            .append("refundType", getRefundType())
            .append("refundFlag", getRefundFlag())
            .append("refundNo", getRefundNo())
            .append("refundStatus", getRefundStatus())
            .append("refundTotalMoney", getRefundTotalMoney())
            .append("refundReason", getRefundReason())
            .append("creator", getCreator())
            .append("createTime", getCreateTime())
            .append("approver", getApprover())
            .append("approvalTime", getApprovalTime())
            .toString();
    }
}
